/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package LogicaNegocio.Controlador;

import AccesoDatos.Persistencia.Manager.ManagerAutor;
import GUI.Bibliotecario.AdminAutores.PanelRegistrarAutor;
import LogicaNegocio.Biblioteca.Autor;
import LogicaNegocio.Validacion.VBiblioteca;
import javax.persistence.EntityExistsException;
import javax.persistence.RollbackException;
import javax.swing.JOptionPane;

/**
 * Esta clase en java permite el control de eventos
 * para el registro de areas de conocimiento en el sistema.
 *
 * @author sebaxtian
 * Archivo: ControlRegistrarAutor.java
 * @version 1.0
 * Fecha: mar may 11 12:22:52 COT 2010
 */



public class ControlRegistrarAutor {

    //Atributos de clase
    private PanelRegistrarAutor panelRegistrar;
    private ManagerAutor gestorAutor;
    private Autor autor;


    public ControlRegistrarAutor(PanelRegistrarAutor panelRegistrar) {
        this.panelRegistrar = panelRegistrar;
        gestorAutor = new ManagerAutor();
        registrar();
    }

    private void registrar() {
        try {
            //crea editorial
            autor = new Autor();
            autor.setCodigoAutor(Integer.parseInt(panelRegistrar.textFieldCodigo.getText()));
            autor.setPrimerApellido(panelRegistrar.textFieldPrimerApellido.getText());
            autor.setPrimerNombre(panelRegistrar.textFieldPrimerNombre.getText());
            autor.setSegundoApellido(panelRegistrar.textFieldSegundoApellido.getText());
            autor.setSegundoNombre(panelRegistrar.textFieldSegundoNombre.getText());
            //valida datos
            new VBiblioteca(autor);
            //si los datos son correctos
            gestorAutor.crearAutor(autor);
            //si no ocurren excepciones
            limpiar();
            //informa
            JOptionPane.showMessageDialog(panelRegistrar, "El nuevo autor ha sido registrado con exito", "Registrar", JOptionPane.INFORMATION_MESSAGE);
        } catch (NumberFormatException ex) {
            JOptionPane.showMessageDialog(panelRegistrar, "El campo de codigo autor solo debe contener datos numericos", "Error Codigo", JOptionPane.ERROR_MESSAGE);
            panelRegistrar.textFieldCodigo.setText("");
        } catch (EntityExistsException ex) {
            JOptionPane.showMessageDialog(panelRegistrar, "Ya existe un autor con codigo "+autor.getCodigoAutor(), "Error Codigo", JOptionPane.INFORMATION_MESSAGE);
        } catch (RollbackException ex) {
            JOptionPane.showMessageDialog(panelRegistrar, "Ya existe un autor con codigo "+autor.getCodigoAutor(), "Error Codigo", JOptionPane.INFORMATION_MESSAGE);
        } catch (VBiblioteca ex) {
            JOptionPane.showMessageDialog(panelRegistrar, ex.getMessage(), "Error Datos", JOptionPane.INFORMATION_MESSAGE);
        }
    }

    private void limpiar() {
        panelRegistrar.textFieldCodigo.setText("");
        panelRegistrar.textFieldPrimerApellido.setText("");
        panelRegistrar.textFieldPrimerNombre.setText("");
        panelRegistrar.textFieldSegundoApellido.setText("");
        panelRegistrar.textFieldSegundoNombre.setText("");
    }
}
